home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / gfx / 3d / irit50src.lha / irit5 / include / iritgrap.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-16  |  6.5 KB  |  240 lines

  1. /*****************************************************************************
  2. *   "Irit" - the 3d polygonal solid modeller.                     *
  3. *                                         *
  4. * Written by:  Gershon Elber                Ver 1.0, Jan. 1992   *
  5. ******************************************************************************
  6. * Global definitions of    Graphics interface.                         *
  7. *****************************************************************************/
  8.  
  9. #ifndef    IRIT_GRAP_H    /* Define only once */
  10. #define    IRIT_GRAP_H
  11.  
  12. #include "irit_sm.h"
  13. #include "genmat.h"
  14. #include "iritprsr.h"
  15. #include "animate.h"
  16.  
  17. #define IG_IRIT_BLACK        0
  18. #define IG_IRIT_BLUE        1
  19. #define IG_IRIT_GREEN        2
  20. #define IG_IRIT_CYAN        3
  21. #define IG_IRIT_RED        4
  22. #define IG_IRIT_MAGENTA        5
  23. #define IG_IRIT_BROWN        6
  24. #define IG_IRIT_LIGHTGREY    7
  25. #define IG_IRIT_DARKGRAY    8
  26. #define IG_IRIT_LIGHTBLUE    9
  27. #define IG_IRIT_LIGHTGREEN    10
  28. #define IG_IRIT_LIGHTCYAN    11
  29. #define IG_IRIT_LIGHTRED    12
  30. #define IG_IRIT_LIGHTMAGENTA    13
  31. #define IG_IRIT_YELLOW        14
  32. #define IG_IRIT_WHITE        15
  33.  
  34. #define IG_MAX_COLOR        15
  35.  
  36. #define IG_SOLID_LINE        1
  37. #define IG_DOTTED_LINE        2
  38.  
  39. #define IG_POINT_WIDTH        0.02
  40.  
  41. /* The current NormalLength is divided by scalar to form real normal length: */
  42. #define IG_NORMAL_DEFAULT_LENGTH    100
  43. #define IG_NORMAL_SCALER_LENGTH        1000
  44.  
  45. /* The current point cross length is divided by scalar to form real length:  */
  46. #define IG_POINT_DEFAULT_LENGTH    20
  47. #define IG_POINT_SCALER_LENGTH    1000
  48.  
  49. #define IG_DEFAULT_COLOR        1  /* For objects with no color defined. */
  50.  
  51. #define IG_VIEW_PERSPECTIVE        1              /* View modes. */
  52. #define IG_VIEW_ORTHOGRAPHIC        2
  53. #define IG_DEFAULT_PERSPECTIVE_Z    -5.0       /* Default Z focal point. */
  54.  
  55. #define IG_TRANS_SCREEN    1     /* Screen, Object coords. transformation mode. */
  56. #define IG_TRANS_OBJECT    2
  57.  
  58. #define IG_DEFAULT_NUM_OF_ISOLINES    10
  59. #define IG_DEFAULT_SAMPLES_PER_CURVE    64
  60. #define IG_DEFAULT_POLYGON_FINENESS    20
  61.  
  62. #define IG_DEFAULT_IRIT_MAT        "irit.mat"
  63.  
  64. #define IG_IS_DRAG_EVENT(Event)    (Event == IG_EVENT_PERS_ORTHO_Z || \
  65.                  Event == IG_EVENT_ROTATE_X || \
  66.                  Event == IG_EVENT_ROTATE_Y || \
  67.                  Event == IG_EVENT_ROTATE_Z || \
  68.                  Event == IG_EVENT_TRANSLATE_X || \
  69.                  Event == IG_EVENT_TRANSLATE_Y || \
  70.                  Event == IG_EVENT_TRANSLATE_Z || \
  71.                  Event == IG_EVENT_SCALE || \
  72.                  Event == IG_EVENT_NEAR_CLIP || \
  73.                  Event == IG_EVENT_FAR_CLIP)
  74.  
  75. typedef enum {
  76.     IG_EVENT_NONE = 2000,
  77.     IG_EVENT_QUIT,
  78.     IG_EVENT_SCR_OBJ_TGL,
  79.     IG_EVENT_PERS_ORTHO_TGL,
  80.     IG_EVENT_PERS_ORTHO_Z,
  81.     IG_EVENT_ROTATE_X,
  82.     IG_EVENT_ROTATE_Y,
  83.     IG_EVENT_ROTATE_Z,
  84.     IG_EVENT_TRANSLATE_X,
  85.     IG_EVENT_TRANSLATE_Y,
  86.     IG_EVENT_TRANSLATE_Z,
  87.     IG_EVENT_SCALE,
  88.     IG_EVENT_NEAR_CLIP,
  89.     IG_EVENT_FAR_CLIP,
  90.     IG_EVENT_DEPTH_CUE,
  91.     IG_EVENT_DBL_BUFFER,
  92.     IG_EVENT_SAVE_MATRIX,
  93.     IG_EVENT_PUSH_MATRIX,
  94.     IG_EVENT_POP_MATRIX,
  95.     IG_EVENT_ANIMATION,
  96.     IG_EVENT_STATE
  97. } IGGraphicEventType;
  98.  
  99. typedef enum {   /* Note that some device drivers depends on this order. */
  100.     IG_STATE_OOPS = 1,
  101.     IG_STATE_MORE_SENSITIVE,
  102.     IG_STATE_LESS_SENSITIVE,
  103.     IG_STATE_SCR_OBJ_TGL,
  104.     IG_STATE_PERS_ORTHO_TGL,
  105.     IG_STATE_DEPTH_CUE,
  106.     IG_STATE_CACHE_GEOM,
  107.     IG_STATE_DRAW_SOLID,
  108.     IG_STATE_BACK_FACE_CULL,
  109.     IG_STATE_DOUBLE_BUFFER,
  110.     IG_STATE_ANTI_ALIASING,
  111.     IG_STATE_DRAW_INTERNAL,
  112.     IG_STATE_DRAW_VNORMAL,
  113.     IG_STATE_DRAW_PNORMAL,
  114.     IG_STATE_DRAW_SRF_MESH,
  115.     IG_STATE_DRAW_SRF_POLY,
  116.     IG_STATE_FOUR_PER_FLAT,
  117.     IG_STATE_MORE_ISOLINES,
  118.     IG_STATE_LESS_ISOLINES,
  119.     IG_STATE_FINER_APPROX,
  120.     IG_STATE_COARSER_APPROX,
  121.     IG_STATE_LONGER_VECTORS,
  122.     IG_STATE_SHORTER_VECTORS,
  123.     IG_STATE_WIDER_LINES,
  124.     IG_STATE_NARROW_LINES,
  125.     IG_STATE_VIEW_FRONT,
  126.     IG_STATE_VIEW_SIDE,
  127.     IG_STATE_VIEW_TOP,
  128.     IG_STATE_VIEW_ISOMETRY,
  129.     IG_STATE_CLEAR_VIEW,
  130.     IG_STATE_ANIMATION,
  131.  
  132.     IG_STATE_FINER_ADAP_ISO,
  133.     IG_STATE_COARSER_ADAP_ISO,
  134.     IG_STATE_FINER_RULED_SRF,
  135.     IG_STATE_COARSER_RULED_SRF,
  136.     IG_STATE_RULED_SRF_APPROX,
  137.     IG_STATE_ADAP_ISO_DIR
  138. } IGGlblStateType;
  139.  
  140. extern int
  141.     IGGlblBackGroundColor[3],
  142.     IGGlblDrawInternal,
  143.     IGGlblDrawVNormal,
  144.     IGGlblDrawPNormal,
  145.     IGGlblMore,
  146.     IGGlblForceUnitMat,
  147.     IGGlblDrawSolid,
  148.     IGGlblBackFaceCull,
  149.     IGGlblDoDoubleBuffer,
  150.     IGGlblNumOfIsolines,
  151.     IGGlblSamplesPerCurve,
  152.     IGGlblLineWidth,
  153.     IGGlblAdapIsoDir,
  154.     IGGlblPolylineOptiApprox,
  155.     IGGlblPolygonOptiApprox,
  156.     IGGlblDepthCue,
  157.     IGGlblCacheGeom,
  158.     IGGlblFourPerFlat,
  159.     IGGlblAntiAliasing,
  160.     IGGlblDrawSurfaceMesh,
  161.     IGGlblDrawSurfacePoly,
  162.     IGGlblStandAlone,
  163.     IGGlblTransformMode,
  164.     IGGlblViewMode,
  165.     IGGlblDebugObjectsFlag,
  166.     IGGlblDebugEchoInputFlag,
  167.     IGGlblDelayedClear,
  168.     IGGlblDisplayListIsUsed,
  169.     IGGlblIntensityHighState,
  170.     IGGlblAbortKeyPressed,
  171.     IGGlblAnimation,
  172.     IGGlblNumFiles,
  173.     IGGlblPrgmInput,
  174.     IGGlblPrgmOutput;
  175.  
  176. extern char
  177.     *IGGlblTransPrefPos,
  178.     *IGGlblViewPrefPos,
  179.     **IGGlblFileNames;
  180.  
  181. extern RealType
  182.     IGGlblLightSrcPos[4],
  183.     IGGlblFineNess,
  184.     IGGlblChangeFactor,
  185.     IGGlblZMinClip,
  186.     IGGlblZMaxClip,
  187.     IGGlblNormalLen;
  188.  
  189. extern IPObjectStruct
  190.     *IGGlblDisplayList;
  191.  
  192. extern MatrixType
  193.     IGGlblCrntViewMat,
  194.     IGGlblIsometryViewMat;
  195.  
  196. extern AnimationStruct IGAnimation;
  197.  
  198. #if defined(__cplusplus) || defined(c_plusplus)
  199. extern "C" {
  200. #endif
  201.  
  202. /* Gen_grap.c routines - generic graphic's driver routines. */
  203. void IGConfigureGlobals(char *PrgmName, int argc, char **argv);
  204. void IGProcessCommandMessages(int ProcessCommandMessages);
  205. int IGReadObjectsFromSocket(int ViewMode, IPObjectStruct **DisplayList);
  206. void IGSaveCurrentMat(int ViewMode, char *Name);
  207. int IGProcessEvent(IGGraphicEventType Event, RealType ChangeFactor);
  208. void IGActiveListFreeNamedAttribute(char *Name);
  209. int IGDefaultStateHandler(int State, int Refresh);
  210.  
  211. /* Functions that should be defined in most graphics driver. */
  212. int IGHandleState(int State, int Refresh);
  213. void IGHandleInternalEvents(void);
  214. void IGCreateStateMenu(void);
  215. void IGSetColorIntensity(int High);
  216. void IGSetColorObj(IPObjectStruct *PObj);
  217. void IGSetWidthObj(int Width);
  218. void IGIritBeep(void);
  219. void IGMoveTo2D(RealType X, RealType Y);
  220. void IGLineTo2D(RealType X, RealType Y);
  221.  
  222. /* The primitive drawing routines. */
  223. void IGMoveTo3D(RealType *Pt);
  224. void IGLineTo3D(RealType *Pt);
  225. void IGDrawObject(IPObjectStruct *PObj);
  226. void IGDrawPtVec(IPObjectStruct *PObj);
  227. void IGDrawPoly(IPObjectStruct *PObj);
  228. void IGDrawCurve(IPObjectStruct *PObj);
  229. void IGDrawSurface(IPObjectStruct *PObj);
  230. void IGDrawTrimSrf(IPObjectStruct *PObj);
  231. void IGDrawTrivar(IPObjectStruct *PObj);
  232. void IGRedrawViewWindow(void);
  233.  
  234. #if defined(__cplusplus) || defined(c_plusplus)
  235. }
  236. #endif
  237.  
  238. #endif /* IRIT_GRAP_H */
  239.  
  240.